<!--
 * @Author: xuhy 1727317079@qq.com
 * @Date: 2022-09-04 09:48:48
 * @LastEditors: xuhy 1727317079@qq.com
 * @LastEditTime: 2022-09-15 18:59:18
 * @FilePath: \vue3_test\src\App.vue
 * @Description: Demo
-->
<template>
  <h4>当前的求和为: {{ sum }}</h4>
  <button @click="sum++">点我++</button>
  <hr />
  <h2>姓名: {{ name }}</h2>
  <h2>年龄: {{ age }}</h2>
  <h2>薪资: {{ job.j1.salary }}K</h2>
  <h3 v-show="person.car">座驾信息: {{ person.car }}</h3>
  <button @click="name += `~`">修改姓名</button>
  <button @click="age++">增长年龄</button>
  <button @click="job.j1.salary++">涨薪</button>
  <button @click="showRawPerson">输出最原始的person</button>
  <button @click="addCar">给person添加一台车</button>
  <button @click="person.car.name += '!'" v-show="person.car">换车名</button>
  <button @click="person.car.price++" v-show="person.car">换价格</button>
</template>

<script>
import { reactive, toRefs, ref, toRaw, markRaw } from "vue";
export default {
  name: "DemoTest",
  setup() {
    let sum = ref(0);
    let person = reactive({
      name: "张三",
      age: 18,
      job: {
        j1: {
          salary: 20,
        },
      },
    });

    function showRawPerson() {
      const p = toRaw(person);
      console.log(p);
    }

    function addCar() {
      let car = { name: "奔驰", price: 40 };
      person.car = markRaw(car);
    }
    // 返回一个对象(常用)
    return {
      sum,
      person,
      ...toRefs(person),
      showRawPerson,
      addCar,
    };
  },
};
</script>
